class Subject{
    constructor(){
        this.observers=[];//用来保存它的观察者
    }
    subscribe(observer){
        //每当有观察者订阅主题状态变化的时候，就把这个新的观察者保存到observers数组中
        this.observers.push(observer);
    }
    notify(data){
        //取出保存的所有的观察者，通知每个观察者
        this.observers.forEach(observer=>{
            observer.update(data);
        });
    }
}
//创建观察者的类
class Observer{
    constructor(name){//接收观察者的名字，并且保存在内部私有属性中
        this.name = name;
    }
    //在观察者模式中，规定每个观察者都需要提供一个update方法，用来在更新 时候执行某些动作
    update(data){
        console.log(this.name,data);
        //进行行动
    }
}
//创建一个主题的实例，或者说创建一个被观察者的实例
debugger
const subject = new Subject();
//创建三个观察者
const observer1 = new Observer('1');
const observer2 = new Observer('2');
const observer3 = new Observer('3');
//给主题添加一个观察者
subject.subscribe(observer1);
subject.subscribe(observer2);
subject.subscribe(observer3);
//当主题发生变化时会通知观察者们
subject.notify('I am ready.');